# 1. 定义一个函数 add，接收两个参数 a 和 b，返回它们的和。
# 2. 编写一个函数 is_even(n)，判断传入的整数是否为偶数，返回 True 或 False。
# 5. 写一个函数 reverse_string(s)，接收一个字符串，返回它的反转字符串。例如输入 "hello"，返回 "olleh"。
import math


# 3. 编写一个函数 factorial(n)，计算并返回正整数 n 的阶乘（例如 5! = 5×4×3×2×1）。
def factorial(n):
    cj=1
    # for a in range(1,n+1):
    for a in range(n,0,-1):
        cj*=a
    return  cj
# 4. 编写一个函数 find_max(lst)，接收一个列表，
# 返回其中的最大值（不使用内置函数 max）。
def find_max(lst):
    # lst.sort()
    # return  lst[-1]
    # return  max(lst)
    max_num= lst[0] #假设列表中第一个是最大值
    for a in lst:
        if max_num<a:
            max_num=a
    return max_num


# 6. 编写一个函数 count_vowels(s)，
# 统计字符串中元音字母（a, e, i, o, u）出现的个数（不区分大小写）。
def count_vowels(s):
    s1= s.lower()  #把s中所有的字符变成大写
    return  sum((s1.count("a"),s1.count("e"),s1.count("i"),s1.count("o"),s1.count("u")))
print(count_vowels("saljslkjsadlfjsalfd"))
    # count=0
    # for c in s1:
    #    if c in ('a', 'e', 'i', 'o', 'u'): #判断元素是否在这个(a, e, i, o, u)元组内
    #        count+=1  #如果在 个数就+1操作
    #
    # return  count

# 7. 编写一个函数 fibonacci(n)，返回长度为 n 的斐波那契数列列表，例如输入 5，返回 [0, 1, 1, 2, 3]。

def fibonacci(n):
    list1=[0,1]
    if n==1:
        return [list1[0]]
    elif n==2:
        return list1
    for index in range(2,n):   # 裴波那契要求的从第三个开始
        num=list1[index-1]+list1[index-2]
        list1.append(num)
    return list1
print(fibonacci(50))

# 8. 写一个函数 is_prime(n)，判断一个整数是否是质数（素数）。
def is_prime(n):
    if n==1:
        return False
    for a in range(2,n//2):
        if n %a==0:
            return False
    return True











